#ifndef CHEETAH_UI_LOGICAL_WINDOW_H
#define CHEETAH_UI_LOGICAL_WINDOW_H

namespace cheetah {
namespace ui {
class LogicWindow {
public:  
  virtual ~LogicWindow() = 0;
  virtual int width() const = 0;
  virtual int height() const = 0;
  virtual int x() const = 0;
  virtual int y() const = 0;
  virtual void SetWindowTitle(const char *) = 0;
protected:
  virtual void OnPaint() { }
  virtual void OnResize(const int width, const int height) {  }
  virtual void OnIdle() { }
  virtual void OnKeyUp(const int key, const int x, const int y) { }
  virtual void OnKeyDown(const int key, const int x, const int y) { }
  virtual void OnLeftBtnDown(const int x, const int y) { }
  virtual void OnLeftBtnUp(const int x, const int y) { }
  virtual void OnRightBtnDown(const int x, const int y) { }
  virtual void OnRightBtnUp(const int x, const int y) { }
  virtual void OnMiddleBtnDown(const int x, const int y) { }
  virtual void OnMiddleBtnUp(const int x, const int y) { }
  virtual void OnMouseWheel(const int x, const int y, const int dz, 
                            const int flag) { }
  virtual void OnMouseMove(const int btn, const int x, const int y) { }
  virtual void OnCommand(const int cmd) { }
};
} // ui
} // cheetah

#endif // CHEETAH_UI_LOGICAL_WINDOW_H
